home *** CD-ROM | disk | FTP | other *** search
- 2 IIR7
- Name: IIR7.ASM
- Type: Assembler Macro
- Version: 1.0
- Date Entered: 15-Jul-87
- Last Change: 15-Jul-87
-
- Description: Cascaded Biquad Filters
-
-
- Cascaded biquad filters are typically used when the transfer
- function can be decomposed into a product of second order
- polynomials. The magnitude of the coefficients of the second
- order section are guaranteed to be less than 2.0 if the filter
- is stable and minimum phase. Since the DSP56000 scaling modes
- can implement 1 bit scaling directly, implementing cascaded second
- order sections can be done efficiently. The difference equation
- for a second order section is:
-
- y(n) = a(1)y(n-1) + a(2)y(n-2) + x(n) + b(1)x(n-1) + b(2)x(n-2)
-
- with z transform:
- -1 -2
- Y(z) 1 + b(1)z + b(2)z
- ------- = ----------------------
- X(z) -1 -2
- 1 - a(1)z - a(2)z
-
- where:
- x(n) = input sample at time nT
- y(n) = output of the filter at time nT
- a(n) = filter coefficient n
- b(n) = filter coefficient n
- T = sample period
-
- When these sections are cascaded together, the z transform of
- the overall system is:
-
- M -1 -2
- R(z) --- 1 + b[n](1)z + b[n](2)z
- ------- = | | -------------------------
- S(z) | | -1 -2
- n=1 1 - a[n](1)z - a[n](2)z
-
- Where M is the total number of sections and [n] refers to the
- section number. A cascaded biquad filter with M=2 is shown below.
-
- s(n) Input w[1](n) w[2](n) Output
- >-->(+)-----------------------(+)-(+)-----------------------(+)--> r(n)
- ^ | ^ ^ | ^
- | 1/z | | 1/z |
- (+)<-a[1](1)--|--b[1](1)->(+) (+)<-a[2](1)--|--b[2](1)->(+)
- | 1/z | | 1/z |
- (+)<-a[1](2)--|--b[1](2)->(+) (+)<-a[2](2)--|--b[2](2)->(+)
-
- Cascaded Second Order Biquad Filter
-
-
-
- For the filter kernel, the input sample is in register
- A and the output after filtering of a section is also
- in register A. This allows the next filter section to be
- executed by putting the filter kernel inside of a DO
- loop. The memory map for the cascaded biquad filter is shown
- below. Note in particular the way that the filter states
- are stored. The first element is the second filter state
- and the second element is the first filter state. Also
- note the method of coefficient storage. The first element is
- a(2) then a(1) followed by b(2) and b(1).
-
- r0
- |
- v
- -----------------------------------------
- X: | | | | |
- |w[1](n-1)|w[1](n-2)|w[2](n-2)|w[2](n-1)| Filter States
- -----------------------------------------
- <- section 1 ->|<- section 2 ->
-
- r4
- |
- v
- -------------------------------------
- Y: | a(2) | a(1) | b(2) | b(1) | Section 1
- | .711/2 | -1.29/2| -.5 | 0.0 | Filter Coefficients
- -------------------------------------
-
- -------------------------------------
- | a(2) | a(1) | b(2) | b(1) | Section 2
- | .807/2 | -1.64/2| -.5 | 0.0 | Filter Coefficients
- -------------------------------------
-
- Memory Map for the Biquad Filter
-
- Since 1 bit scaling is used, all coefficients are the
- actual value for the filter divided by two. The symbol "nsec"
- refers to the number of biquad sections in the overall filter.
-
- For an example of how to use this filter see the test
- program IIR7T.ASM
-
-
-